The present invention relates to a method and apparatus for inverse quantization of video data provided in accordance with the MPEG-4 standard, and, in particular, to inverse quantization in a video texture decoding process.
The invention is particularly suitable for use with various multimedia applications, and is compatible with the MPEG-4 Verification Model (VM) standard described in document ISO/IEC 14496-2, ISO/IEC JTC1/SC29/WG11 N1902, entitled xe2x80x9cCoding of Audio-Visual Objects: Visualxe2x80x9d, Oct. 30, 1997, incorporated herein by reference. The MPEG-2 standard is a precursor to the MPEG-4 standard, and is described in document ISO/IEC 13818-2, entitled xe2x80x9cInformation Technologyxe2x80x94Generic Coding of Moving Pictures and Associated Audio, Recommendation H.262,xe2x80x9d Mar. 25, 1994, incorporated herein by reference. Further details on the MPEG-4 standard can be found in T. Sikora, xe2x80x9cThe MPEG-4 Video Standard Verification Model,xe2x80x9d IEEE Transactions on Circuits and Systems for Video Technology, Vol. 7, No. 1, February 1997, pp. 19-31.
MPEG-4 is a new coding standard which provides a flexible framework and an open set of coding tools for communication, access, and manipulation of digital audio-visual data. These tools support a wide range of features. The flexible framework of MPEG-4 supports various combinations of coding tools and their corresponding functionalities for applications required by the computer, telecommunication, and entertainment (i.e., TV and film) industries, such as database browsing, information retrieval, and interactive communications.
MPEG-4 provides standardized core technologies allowing efficient storage, transmission and manipulation of video data in multimedia environments. Moreover, systems complying with the MPEG-4 standard achieve efficient compression, object scalability, spatial and temporal scalability, and error resilience.
The MPEG-4 video VM coder/decoder (codec) is a block- and object-based hybrid coder with motion compensation. Texture is encoded with an 8xc3x978 Discrete Cosine Transformation (DCT) utilizing macroblock-based motion compensation. Object shapes are represented as alpha maps and encoded using a Content-based Arithmetic Encoding (CAE) algorithm or a modified DCT coder, both using temporal prediction. The coder can handle sprites as they are known from computer graphics. Other coding methods, such as wavelet and sprite coding, may also be used for special applications.
Motion compensated texture coding is a well known approach for video coding, and can be modeled as a three-stage process. The first stage is signal processing which includes motion estimation and compensation (ME/MC) and a two-dimensional (2-D) spatial transformation. The objective of ME/MC and the spatial transformation is to take advantage of temporal and spatial correlations in a video sequence to optimize the rate-distortion performance of quantization and entropy coding under a complexity constraint. The most common technique for ME/MC has been block matching, and the most common spatial transformation has been the DCT.
Inverse quantization is an important step in the video texture decoding process. There are two quantization methods specified in MPEG-4 video. The first method is the MPEG-2 quantization method, and the second method is the H.263 quantization method set forth in ITU-T Group for Line Transmission of Non-Telephone Signals, xe2x80x9cDraft recommendation H.263xe2x80x94Video coding for low bitrate communication,xe2x80x9d December, 1995. The DC coefficients of intra-coded blocks are inverse-quantized differently than all other coefficients when the MPEG-2 quantization method is used. This has led to complexity in attempting to design an inverse quantizer for MPEG-4 video.
Accordingly, it would be desirable to have an efficient and simple technique for inverse quantization when processing MPEG-4 video. The present invention provides an apparatus and method having the above and other advantages.
In accordance with the invention, a two-dimensional array of quantized coefficients QF[v][u] to be inverse quantized is provided. A first weighting matrix {overscore (W)}[0][v][u]=2*W[0][v][u] for intra-coded macroblocks represented by said coefficients is pre-computed and stored. A second weighting matrix {overscore (W)}[1][v][u]=2*W[1][v][u] for non-intra-coded macroblocks represented by said coefficients is pre-computed and stored. A quantization difference to be used in selecting a weight factor is computed based on a current macroblock quantization level. The weight factor is provided from one of the stored first and second weighting matrices in response to the quantization difference and a macroblock type identifier. Subsequent weights Wi+1[w][v][u] are then computed from a current weight Wi[w][v][u] and the weight factor.
In an illustrated embodiment, the array of coefficients QF[v][u] is multiplied by the weights Wi+1[w][v][u] to reconstruct unquantized coefficients. Moreover, in the illustrated embodiment, the coefficients represent macroblocks of a video object plane (VOP).
The quantization difference can be computed by subtracting a first quantizer scale (quantizer_scalei) from a second, subsequent quantizer scale (quantizer_scalei+1).
Apparatus is provided in accordance with the invention for inverse quantizing a two-dimensional array of quantized coefficients QF[v][u]. A pre-computed first weighting matrix {overscore (W)}[0][v][u]=2*W[0][v][u] is stored in a memory for intra-coded macroblocks represented by the coefficients. A pre-computed second weighting matrix {overscore (W)}[1][v][u]=2*W[1][v][u] for non-intra-coded macroblocks represented by said coefficients is also stored. A first adder computes a quantization difference to be used in selecting a weight factor based on a current macroblock quantization level. The weight factor is output from the first or second weighting matrix in response to the quantization difference and a macroblock type identifier that specifies either an intra-coded block or a non-intra-coded block. A second adder iteratively computes subsequent weights Wi+1[w][v][u] from a current weight Wi[w][v][u] and the weight factor.
A multiplier can be provided for multiplying the array of coefficients QF[v][u] by the weights Wi+1[w][v][u] in order to reconstruct unquantized coefficients. In an illustrated embodiment, the coefficients represent macroblocks of a video object plane (VOP).
The pre-computed first and second weighting matrices can be stored, e.g., in a first random access memory (RAM) addressed by the quantization difference and the macroblock type identifier. An initial weight W0[w][v][u] for each VOP can be stored in a second RAM and provided to the second adder as Wi[w][v][u] via a delay. The second RAM is addressed by an initial quantization level (Vop_quant) of each VOP and the macroblock type identifier. A switch can be provided to couple the initial weight W0[w][v][u] for each VOP from the second RAM to the delay at the commencement of each new VOP.